package youleche.com.sql.idao;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

import youleche.com.sql.model.MTableInfo;

/**
 * 表信息接口
 * @author Administrator
 *
 */
public interface ITableInfo {
	/**
	 * 添加表信息
	 * @param con 数据库连接
	 * @param tableInfo 表信息
	 * @return 返回添加影响的行数
	 */
	public int addTableInfo(Connection con, MTableInfo tableInfo) throws Exception;
	
	/**
	 * 是否存在该表
	 * @param con 数据库连接
	 * @param tableName 表名
	 * @return 返回是否存在
	 * @throws Exception
	 */
	public boolean isExistTableName(Connection con, String tableName) throws Exception;
	
	/**
	 * 删除表信息通过ID
	 * @param con 数据库连接
	 * @param tableId 表ID
	 * @return 返回是否删除成功
	 * @throws Exception 抛出异常
	 */
	public boolean deleteTableInfoById(Connection con, String tableId) throws Exception;
	
	/**
	 * 获取表数据总数
	 * @param con 数据库连接
	 * @return 返回总条数
	 * @throws Exception 抛出异常
	 */
	public int getTableInfoCount(Connection con) throws Exception;
	
	/**
	 * 获取表数据总数(查询)
	 * @param con 数据库连接
	 * @param condition 查询条件
	 * @return 返回总条数
	 * @throws Exception 抛出异常
	 */
	public int getTableInfoCountForQuery(Connection con, Map<String, String> condition) throws Exception;
	
	/**
	 * 分页
	 * @param con 数据库连接
	 * @param startIndex 开始索引
	 * @param endIndex 结束索引
	 * @return 返回分页数据
	 * @throws Exception 抛出异常
	 */
	public List<MTableInfo> getTableInfoListForPage(Connection con, String startIndex, String endIndex) throws Exception;
	
	/**
	 * 根据tableID获取表数据信息
	 * @param con数据库连接
	 * @param tableId 表ID
	 * @return 表信息
	 * @throws Exception
	 */
	public MTableInfo getTableInfoByTableId(Connection con, String tableId) throws Exception;
	
	/**
	 * 通过tableId更新说明
	 * @param con数据库连接
	 * @param tableId 表ID
	 * @param tableDesc 表说明
	 * @return  返回影响的行数
	 * @throws Exception
	 */
	public int updateTableDescByTableId(Connection con, String tableId, String tableDesc) throws Exception;
	
	/**
	 * 分页查询
	 * @param con数据库连接
	 * @param condition 查询条件
	 * @return 返回查询结果
	 * @throws Exception 抛出异常
	 */
	public List<MTableInfo> getTableInfoListForQuery(Connection con, Map<String, String> condition, String startIndex, String pageSize) throws Exception;
	
	/**
	 * 根据表名获取表id
	 * @param con 数据库连接
	 * @param tableName 表名
	 * @return 返回表id
	 * @throws Exception 异常
	 */
	public String getTableIdByTableName(Connection con, String tableName) throws Exception;
}
